{
  "private": true,
  "scripts": {
    "check-dependencies": "scripts/frontend/check_dependencies.sh",
    "block-dependencies": "node scripts/frontend/block_dependencies.js",
    "check:startup_css": "scripts/frontend/startup_css/startup_css_changed.sh",
    "clean": "rm -rf public/assets tmp/cache/*-loader",
    "dev-server": "NODE_OPTIONS=\"--max-old-space-size=5120\" node scripts/frontend/webpack_dev_server.js",
    "file-coverage": "scripts/frontend/file_test_coverage.js",
    "lint-docs": "scripts/lint-doc.sh",
    "internal:eslint": "eslint --cache --max-warnings 0 --report-unused-disable-directives --ext .js,.vue,.graphql",
    "internal:stylelint": "stylelint -q --rd '{ee/,}app/assets/stylesheets/**/*.{css,scss}'",
    "prejest": "yarn check-dependencies",
    "jest": "jest --config jest.config.js",
    "jest-debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
    "jest:ci": "jest --config jest.config.js --ci --coverage --testSequencer ./scripts/frontend/parallel_ci_sequencer.js",
    "jest:ci:predictive": "jest --config jest.config.js --ci --coverage --findRelatedTests $(cat $RSPEC_CHANGED_FILES_PATH) $(cat $RSPEC_MATCHING_JS_FILES_PATH) --passWithNoTests --testSequencer ./scripts/frontend/parallel_ci_sequencer.js",
    "jest:contract": "PACT_DO_NOT_TRACK=true jest --config jest.config.contract.js --runInBand",
    "jest:integration": "jest --config jest.config.integration.js",
    "jest:quarantine": "grep -r 'quarantine:' spec/frontend ee/spec/frontend",
    "lint:eslint": "node scripts/frontend/eslint.js",
    "lint:eslint:fix": "node scripts/frontend/eslint.js --fix",
    "lint:eslint:all": "node scripts/frontend/eslint.js .",
    "lint:eslint:all:fix": "yarn run lint:eslint:all --fix",
    "lint:eslint:report": "node scripts/frontend/eslint.js --format html --output-file ./eslint-report.html --no-inline-config .",
    "lint:eslint:staged": "scripts/frontend/execute-on-staged-files.sh internal:eslint '(js|vue)'",
    "lint:eslint:staged:fix": "yarn run lint:eslint:staged --fix",
    "lint:prettier": "yarn run prettier --check '**/*.{graphql,js,vue}'",
    "lint:prettier:fix": "yarn run prettier --write '**/*.{graphql,js,vue}'",
    "lint:prettier:staged": "scripts/frontend/execute-on-staged-files.sh prettier '(graphql|js|vue)' --check",
    "lint:prettier:staged:fix": "scripts/frontend/execute-on-staged-files.sh prettier '(graphql|js|vue)' --write",
    "lint:stylelint": "stylelint '{ee/,}app/assets/stylesheets/**/*.{css,scss}'",
    "lint:stylelint:fix": "yarn run lint:stylelint --fix",
    "lint:stylelint:staged": "scripts/frontend/execute-on-staged-files.sh stylelint '(css|scss)' -q",
    "lint:stylelint:staged:fix": "yarn run lint:stylelint:staged --fix",
    "generate:startup_css": "scripts/frontend/startup_css/setup.sh && node scripts/frontend/startup_css/main.js",
    "generate:startup_css:full": "scripts/frontend/startup_css/setup.sh force && node scripts/frontend/startup_css/main.js",
    "markdownlint": "markdownlint --config .markdownlint.yml",
    "markdownlint:no-trailing-spaces": "markdownlint --config doc/.markdownlint/markdownlint-no-trailing-spaces.yml",
    "markdownlint:no-trailing-spaces:fix": "yarn run markdownlint:no-trailing-spaces --fix",
    "postinstall": "node ./scripts/frontend/postinstall.js",
    "storybook:install": "yarn --cwd ./storybook install",
    "storybook:build": "yarn --cwd ./storybook build --quiet",
    "storybook:start": "./scripts/frontend/start_storybook.sh",
    "swagger:validate": "swagger-cli validate",
    "webpack": "NODE_OPTIONS=\"--max-old-space-size=5120\" webpack --config config/webpack.config.js",
    "webpack-vendor": "NODE_OPTIONS=\"--max-old-space-size=5120\" webpack --config config/webpack.vendor.config.js",
    "webpack-prod": "NODE_OPTIONS=\"--max-old-space-size=5120\" NODE_ENV=production webpack --config config/webpack.config.js"
  },
  "dependencies": {
    "@apollo/client": "^3.5.10",
    "@babel/core": "^7.18.5",
    "@babel/preset-env": "^7.18.2",
    "@cubejs-client/core": "^0.33.12",
    "@cubejs-client/vue": "^0.33.12",
    "@floating-ui/dom": "^1.2.9",
    "@gitlab/at.js": "1.5.7",
    "@gitlab/cluster-client": "^1.2.0",
    "@gitlab/favicon-overlay": "2.0.0",
    "@gitlab/fonts": "^1.3.0",
    "@gitlab/svgs": "3.59.0",
    "@gitlab/ui": "64.20.1",
    "@gitlab/visual-review-tools": "1.7.3",
    "@gitlab/web-ide": "0.0.1-dev-20230807045127",
    "@mattiasbuelens/web-streams-adapter": "^0.1.0",
    "@popperjs/core": "^2.11.2",
    "@rails/actioncable": "7.0.6",
    "@rails/ujs": "7.0.6",
    "@snowplow/browser-plugin-client-hints": "^3.9.0",
    "@snowplow/browser-plugin-form-tracking": "^3.9.0",
    "@snowplow/browser-plugin-ga-cookies": "^3.9.0",
    "@snowplow/browser-plugin-link-click-tracking": "^3.9.0",
    "@snowplow/browser-plugin-performance-timing": "^3.9.0",
    "@snowplow/browser-plugin-timezone": "^3.9.0",
    "@snowplow/browser-tracker": "^3.9.0",
    "@sourcegraph/code-host-integration": "0.0.91",
    "@tiptap/core": "^2.0.3",
    "@tiptap/extension-blockquote": "^2.0.3",
    "@tiptap/extension-bold": "^2.0.3",
    "@tiptap/extension-bubble-menu": "2.0.3",
    "@tiptap/extension-bullet-list": "^2.0.3",
    "@tiptap/extension-code": "^2.0.3",
    "@tiptap/extension-code-block": "^2.0.3",
    "@tiptap/extension-code-block-lowlight": "2.0.3",
    "@tiptap/extension-document": "^2.0.3",
    "@tiptap/extension-dropcursor": "^2.0.3",
    "@tiptap/extension-gapcursor": "^2.0.3",
    "@tiptap/extension-hard-break": "^2.0.3",
    "@tiptap/extension-heading": "^2.0.3",
    "@tiptap/extension-highlight": "^2.0.3",
    "@tiptap/extension-history": "^2.0.3",
    "@tiptap/extension-horizontal-rule": "^2.0.3",
    "@tiptap/extension-image": "^2.0.3",
    "@tiptap/extension-italic": "^2.0.3",
    "@tiptap/extension-link": "^2.0.3",
    "@tiptap/extension-list-item": "^2.0.3",
    "@tiptap/extension-ordered-list": "^2.0.3",
    "@tiptap/extension-paragraph": "^2.0.3",
    "@tiptap/extension-strike": "^2.0.3",
    "@tiptap/extension-subscript": "^2.0.3",
    "@tiptap/extension-superscript": "^2.0.3",
    "@tiptap/extension-table": "^2.0.3",
    "@tiptap/extension-table-cell": "^2.0.3",
    "@tiptap/extension-table-header": "^2.0.3",
    "@tiptap/extension-table-row": "^2.0.3",
    "@tiptap/extension-task-item": "^2.0.3",
    "@tiptap/extension-task-list": "^2.0.3",
    "@tiptap/extension-text": "^2.0.3",
    "@tiptap/pm": "^2.0.3",
    "@tiptap/suggestion": "^2.0.3",
    "@tiptap/vue-2": "2.0.3",
    "@vue/apollo-components": "^4.0.0-beta.4",
    "@vue/apollo-option": "^4.0.0-beta.4",
    "apollo-upload-client": "15.0.0",
    "apollo3-cache-persist": "^0.14.1",
    "autosize": "^5.0.1",
    "axios": "^0.24.0",
    "babel-loader": "^8.3.0",
    "babel-plugin-lodash": "^3.3.4",
    "bootstrap": "4.6.2",
    "browserslist": "^4.21.3",
    "cache-loader": "^4.1.0",
    "canvas-confetti": "^1.4.0",
    "clipboard": "^2.0.8",
    "compression-webpack-plugin": "^5.0.2",
    "copy-webpack-plugin": "^6.4.1",
    "core-js": "^3.32.0",
    "cron-validator": "^1.1.1",
    "cronstrue": "^1.122.0",
    "cropper": "^2.3.0",
    "css-loader": "^2.1.1",
    "d3": "^5.16.0",
    "d3-sankey": "^0.12.3",
    "d3-selection": "^1.2.0",
    "dateformat": "^5.0.1",
    "deckar01-task_list": "^2.3.1",
    "dexie": "^3.2.3",
    "diff": "^3.4.0",
    "dompurify": "^2.4.5",
    "dropzone": "^4.2.0",
    "editorconfig": "^0.15.3",
    "emoji-regex": "^10.0.0",
    "fast-mersenne-twister": "1.0.2",
    "file-loader": "^6.2.0",
    "fuzzaldrin-plus": "^0.6.0",
    "gettext-parser": "^6.0.0",
    "graphql": "^15.7.2",
    "graphql-tag": "^2.11.0",
    "gridstack": "^8.4.0",
    "highlight.js": "^11.8.0",
    "immer": "^9.0.15",
    "ipaddr.js": "^1.9.1",
    "jed": "^1.1.1",
    "jest-worker": "^28.1.3",
    "jquery": "^3.6.0",
    "jquery.caret": "^0.3.1",
    "js-cookie": "^3.0.0",
    "js-yaml": "^3.13.1",
    "jszip": "^3.1.3",
    "katex": "^0.13.2",
    "leaflet": "^1.9.4",
    "lodash": "^4.17.20",
    "lowlight": "^2.9.0",
    "marked": "^4.0.18",
    "marked-bidi": "^1.0.3",
    "mathjax": "3",
    "mdurl": "^1.0.1",
    "mermaid": "10.1.0",
    "micromatch": "^4.0.5",
    "minimatch": "^3.0.4",
    "monaco-editor": "^0.30.1",
    "monaco-editor-webpack-plugin": "^6.0.0",
    "monaco-yaml": "4.0.0",
    "mousetrap": "1.6.5",
    "orderedmap": "^2.1.1",
    "papaparse": "^5.3.1",
    "patch-package": "^6.4.7",
    "pdfjs-dist": "^2.16.105",
    "pikaday": "^1.8.0",
    "popper.js": "^1.16.1",
    "portal-vue": "^2.1.7",
    "postcss": "8.4.14",
    "print-js": "^1.6.0",
    "prosemirror-markdown": "1.11.1",
    "raphael": "^2.2.7",
    "raw-loader": "^4.0.2",
    "rehype-raw": "^6.1.1",
    "remark-frontmatter": "^4.0.1",
    "remark-gfm": "^3.0.1",
    "remark-parse": "^10.0.2",
    "remark-rehype": "^10.1.0",
    "scrollparent": "^2.0.1",
    "semver": "^7.3.4",
    "sentrybrowser5": "npm:@sentry/browser@5.30.0",
    "sentrybrowser7": "npm:@sentry/browser@^7.21.1",
    "sortablejs": "^1.10.2",
    "string-hash": "1.1.3",
    "style-loader": "^2.0.0",
    "swagger-ui-dist": "4.12.0",
    "thread-loader": "^3.0.4",
    "three": "^0.143.0",
    "timeago.js": "^4.0.2",
    "tippy.js": "^6.3.7",
    "traverse": "^0.6.7",
    "unified": "^10.1.2",
    "unist-builder": "^4.0.0",
    "unist-util-visit-parents": "5.1.3",
    "url-loader": "^4.1.1",
    "uuid": "8.1.0",
    "visibilityjs": "^1.2.4",
    "vue": "2.7.14",
    "vue-apollo": "^3.0.7",
    "vue-loader": "15.10.1",
    "vue-observe-visibility": "^1.0.0",
    "vue-resize": "^1.0.1",
    "vue-router": "3.6.5",
    "vue-router-vue3": "npm:vue-router@4.1.6",
    "vue-template-compiler": "2.7.14",
    "vue-virtual-scroll-list": "^1.4.7",
    "vuedraggable": "^2.23.0",
    "vuex": "^3.6.2",
    "vuex-vue3": "npm:vuex@4.0.0",
    "web-streams-polyfill": "^3.2.1",
    "web-vitals": "^0.2.4",
    "webpack": "^4.46.0",
    "webpack-bundle-analyzer": "^4.9.0",
    "webpack-cli": "^4.10.0",
    "webpack-stats-plugin": "^0.3.1",
    "worker-loader": "^2.0.0",
    "xterm": "3.14.5",
    "yaml": "^2.0.0-10"
  },
  "devDependencies": {
    "@gitlab/eslint-plugin": "19.0.0",
    "@gitlab/stylelint-config": "4.1.0",
    "@graphql-eslint/eslint-plugin": "3.20.1",
    "@testing-library/dom": "^7.16.2",
    "@types/jest": "^28.1.3",
    "@vue/compat": "^3.2.47",
    "@vue/compiler-sfc": "^3.2.47",
    "@vue/test-utils": "1.3.6",
    "@vue/test-utils-vue3": "npm:@vue/test-utils@2",
    "@vue/vue2-jest": "^28.1.0",
    "@vue/vue3-jest": "^29.2.3",
    "ajv": "^8.10.0",
    "ajv-formats": "^2.1.1",
    "axios-mock-adapter": "^1.15.0",
    "babel-jest": "^28.1.3",
    "chalk": "^2.4.1",
    "cheerio": "^1.0.0-rc.9",
    "commander": "^2.20.3",
    "custom-jquery-matchers": "^2.1.0",
    "eslint": "8.46.0",
    "eslint-import-resolver-jest": "3.0.2",
    "eslint-import-resolver-webpack": "0.13.4",
    "eslint-plugin-import": "^2.28.0",
    "eslint-plugin-no-jquery": "2.7.0",
    "eslint-plugin-no-unsanitized": "^4.0.2",
    "fake-indexeddb": "^4.0.1",
    "gettext-extractor": "^3.7.0",
    "gettext-extractor-vue": "^5.1.0",
    "glob": "^7.1.6",
    "istanbul-lib-coverage": "^3.0.0",
    "istanbul-lib-report": "^3.0.0",
    "istanbul-reports": "^3.0.0",
    "jest": "^28.1.3",
    "jest-canvas-mock": "^2.4.0",
    "jest-diff": "^28.1.3",
    "jest-environment-jsdom": "^28.1.3",
    "jest-jasmine2": "^28.1.3",
    "jest-junit": "^12.3.0",
    "jest-util": "^28.1.3",
    "markdownlint-cli": "0.35.0",
    "markdownlint-rule-helpers": "^0.20.0",
    "miragejs": "^0.1.40",
    "mock-apollo-client": "1.2.0",
    "nodemon": "^2.0.19",
    "prettier": "2.2.1",
    "prosemirror-test-builder": "^1.1.1",
    "purgecss": "^4.0.3",
    "purgecss-from-html": "^4.0.3",
    "sass": "^1.49.9",
    "stylelint": "^14.9.1",
    "swagger-cli": "^4.0.4",
    "timezone-mock": "^1.0.8",
    "vue-loader-vue3": "npm:vue-loader@17",
    "vue-test-utils-compat": "0.0.13",
    "vuex-mock-store": "^0.1.0",
    "webpack-dev-server": "4.15.1",
    "xhr-mock": "^2.5.1",
    "yarn-check-webpack-plugin": "^1.2.0",
    "yarn-deduplicate": "^6.0.2"
  },
  "blockedDependencies": {
    "bootstrap-vue": "https://docs.gitlab.com/ee/development/fe_guide/dependencies.html#bootstrapvue"
  },
  "resolutions": {
    "chokidar": "^3.5.3",
    "@types/node": "14.17.5"
  },
  "engines": {
    "node": ">=12.22.1",
    "yarn": "^1.10.0"
  }
}
